1. Field of the Invention
The present invention relates to monitoring software tasks that are executing on a computer system, and more specifically to a system and method for allowing users to query the status of executing computer tasks.
2. Description of Related Art
Large computing systems are able to be used by a large number of users that can number into the hundreds and even thousands. These computing systems have software task management facilities that accept software tasks, which are sometimes referred to as “jobs,” and that manage the execution of those software tasks. The management of these software tasks can include queuing these jobs with or without prioritization relative to each other and then executing the queued jobs as computing resources become available. These computing systems are sometimes made up of several computers or nodes that are interconnected together and that are configured to operate in a manner so as to appear to be a single computer. An example of such a computing system is a computer cluster, where many computers are interconnected using high-speed and dedicated communications links between one another in order to support efficient parallel and/or coordinated operations and processing. Other examples include multiple computers that are interconnected by more conventional communications means, such as computer networks.
The software task management system used by these computer systems allows users to request the status of the execution queues that contain the tasks that are queued for execution on the one or more computers controlled by that software task management system. This software task management system also allows querying of the status of a particular task that is contained within the execution queue. Determining the status of the software task execution queue or of a particular task within the queue is an additional processing burden on the software task management system. The queue of software tasks that are awaiting execution grows as the nodes of the computer system become more heavily loaded. The users of such heavily loaded computer systems will request the status of the queued software tasks, as well as the status of the queue itself, in order to determine, or to try to estimate, when their previously submitted software task is likely to execute. Users also query the status of the software task execution queue to determine if it is practical to submit new tasks because the wait for execution may be long.
As the computers become more heavily loaded with submitted software tasks and the queue of software tasks awaiting execution becomes long, the users issue requests for the status of the queue and of their submitted tasks with increasing frequency. Automated software programs that are able to repetitively submit status requests to the software task management system can also be used by the users. In computer systems that support hundreds or thousands of users, satisfying the status requests from all of these users clamoring for the status of the queue and the position of their submitted software tasks within the queue can become a significant burden for the software task management system as well as create a large processing demand for the computer upon which the software task management system is executing. This results in long delays for the return of the requested status for a queue or a queued software task, and additional delay in the execution of tasks as the computing resources used to satisfy these many status requests cannot be used to execute the queued software tasks.
In order to more effectively handle the many status requests submitted to a heavily loaded computer system while minimizing the processing load presented by these status requests, an efficient way to satisfy user queries to a task manager is needed.